package Demo08.Demo0825;

import java.util.Scanner;

public class NiuKe {
    public static void main1(String[] args) {
        //从键盘输入a, b, c的值，编程计算并输出一元二次方程ax2 + bx + c = 0的根，当a = 0时，输出“Not quadratic equation”，
        // 当a ≠ 0时，根据△ = b2 - 4*a*c的三种情况计算并输出方程的根。
        //输入描述：
        //多组输入，一行，包含三个浮点数a, b, c，以一个空格分隔，表示一元二次方程ax2 + bx + c = 0的系数。
        //输出描述：
        //针对每组输入，输出一行，输出一元二次方程ax2 + bx +c = 0的根的情况。
        //  如果a = 0，输出“Not quadratic equation”；
        //  如果a ≠  0，分三种情况：
        //△ = 0，则两个实根相等，输出形式为：x1=x2=...。
        //△  > 0，则两个实根不等，输出形式为：x1=...;x2=...，其中x1  <=  x2。
        //△  < 0，则有两个虚根，则输出：x1=实部-虚部i;x2=实部+虚部i，即x1的虚部系数小于等于x2的虚部系数，实部为0时不可省略。实部= -b / (2*a),虚部= sqrt(-△ ) / (2*a)
        //所有实数部分要求精确到小数点后2位，数字、符号之间没有空格。
      /*  Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
            double a = sc.nextDouble();
            double b = sc.nextDouble();
            double c = sc.nextDouble();
            double key = b * b - 4 * a * c;//用来区分根的情况
            if (a == 0) {
                System.out.println("Not quadratic equation");
            } else {
                double t1 = -b / (2 * a);
                double t2 = (-b - Math.sqrt(key)) / (2 * a);
                double t3 = (-b + Math.sqrt(key)) / (2 * a);
                double t4 = -b / (2 * a) + Math.sqrt(key) / (2 * a);
                double t5 = -b / (2 * a) - Math.sqrt(key) / (2 * a);
                if (key == 0) {
                    System.out.printf("x1=x2=%.2f\n", t1);
                } else if (key > 0) {
                    System.out.printf("x1=%.2f;x2=%.2f\n", t2, t3);
                } else {
                    System.out.printf("x1=%.2f;x2=%.2f\n", t4, t5);
                }
            }
        }
        sc.close();*/
    }//BC53 计算一元二次方程

    public static void main2(String[] args) {
        //KiKi想获得某年某月有多少天，请帮他编程实现。输入年份和月份，计算这一年这个月有多少天。
        //输入描述：
        //多组输入，一行有两个整数，分别表示年份和月份，用空格分隔。
        //输出描述：
        //针对每组输入，输出为一行，一个整数，表示这一年这个月有多少天。
        //示例1
        //输入：
        //2008 2
        //复制
        //输出：
        //29
        Scanner sc = new Scanner(System.in);
       /* while(sc.hasNext()) {
            int year = sc.nextInt();//获取年数，分别是否是闰年
            int mouth = sc.nextInt(); //获取月份

            switch (mouth) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    System.out.println(31);
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    System.out.println(30);
                    break;
                case 2:
                    System.out.println(year % 4 == 0 ? 29 : 28);
                    break;
            }
        }*/
    }//BC54 获得月份天数

    public static void main3(String[] args) {
       //KiKi学习了循环，BoBo老师给他出了一系列打印图案的练习，该任务是打印用“*”组成的线段图案。
        //输入描述：
        //多组输入，一个整数（1~100），表示线段长度，即“*”的数量。
        //输出描述：
        //针对每行输入，输出占一行，用“*”组成的对应长度的线段。
        //输入：
        //10
        //2
        //输出：
        //**********
        //**
      /*  Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int a = sc.nextInt();
            for (int i = 0; i < a; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
        sc.close();*/
    }//BC56 线段图案

    public static void main4(String[] args) {
        //KiKi学习了循环，BoBo老师给他出了一系列打印图案的练习，该任务是打印用“*”组成的正方形图案。
        //多组输入，一个整数（1~20），表示正方形的长度，也表示输出行数。：
        //针对每行输入，输出用“*”组成的对应边长的正方形，每个“*”后面有一个空格。
        //输入：
        //4
        //输出：
        //* * * *
        //* * * *
        //* * * *
        //* * * *
        //输入：
        //5
        //复制
        //输出：
        //* * * * *
        //* * * * *
        //* * * * *
        //* * * * *
        //* * * * *
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int a = sc.nextInt();
            for (int i = 0; i < a; i++) {
                for (int i1 = 0; i1 < a; i1++) {
                    System.out.print("*" + " ");
                }
                System.out.println();
            }
        }
        sc.close();;
    }//BC57 正方形图案

    public static void main5(String[] args) {
        //多组输入，一个整数（2~20），表示直角三角形直角边的长度，即“*”的数量，也表示输出行数。
        //针对每行输入，输出用“*”组成的对应长度的直角三角形，每个“*”后面有一个空格。
        //输入：
        //4
        //输出：
        //*
        //* *
        //* * *
        //* * * *
        //输入：
        //5
        //输出：
        //*
        //* *
        //* * *
        //* * * *
        //* * * * *
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int a = sc.nextInt();//行数和每一行所对应的*号个数所对应，所以用a接收
            for (int i = 1; i <= a; i++) {
                for (int i1 = 0; i1 < i; i1++) {
                    System.out.print("*" + " ");
                }
                System.out.println();
            }
        }
        sc.close();
    }//BC58 直角三角形图案

    public static void main6(String[] args) {
        //KiKi学习了循环，BoBo老师给他出了一系列打印图案的练习，该任务是打印用“*”组成的翻转直角三角形图案。
        //多组输入，一个整数（2~20），表示翻转直角三角形直角边的长度，即“*”的数量，也表示输出行数。
        //针对每行输入，输出用“*”组成的对应长度的翻转直角三角形，每个“*”后面有一个空格。
        //输入：
        //5
        //输出：
        //* * * * *
        //* * * *
        //* * *
        //* *
        //*
        //输入：
        //6
        //输出：
        //* * * * * *
        //* * * * *
        //* * * *
        //* * *
        //* *
        //*
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int a = sc.nextInt();//行数和每一行所对应的*号个数所对应，所以用a接收
            for (int i = a; i > 0; i--) {//控制行数
                for (int i1 = i; i1 > 0; i1--) {//控制一行**的个数
                    System.out.print("*" + " ");
                }
                System.out.println();
            }
        }
        sc.close();
    }//BC59 翻转直角三角形图案

    public static void main7(String[] args) {
        //多组输入，一个整数（2~20），表示直角三角形直角边的长度，即“*”的数量，也表示输出行数。
        //针对每行输入，输出用“*”组成的对应长度的直角三角形，每个“*”后面有一个空格。
        //输入：
        //5
        //输出：
        //        *
        //      * *
        //    * * *
        //  * * * *
        //* * * * *
        //输入：
        //4
        //输出：
        //      *
        //    * *
        //  * * *
        //* * * *
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        char[][] arr = new char[x][x];
        for (int a = 0; a < x; a++) {
            for (int b = 0; b < x; b++) {
                arr[a][b] = '*';
            }
        }
        int key = x - 1;
        for (int i = 0; i < x - 1; i++) {//控制行数
            for (int i1 = 0; i1 < key; i1++) {//控制一行**的个数
                arr[i][i1] = ' ';
            }
            key -= 1;
        }
        for (int i = 0; i < x; i++) {
            for (int i1 = 0; i1 < x; i1++) {
                System.out.print(arr[i][i1] + " ");
            }
            System.out.println();
        }
        sc.close();
        //总结一下：两种思路 ： （1）二维数组每一个赋值*，然后用 “ ”覆盖
        //（2） 一个循环打印“ ”，另外一个跟在后面打印“*”,在后面跟一歌 println()；
    }//BC60 带空格直角三角形图案

    public static void main(String[] args){
    }
}
